package com.zmc.common.annotation;

import com.zmc.common.enums.RequestSourceEnum;
import org.springframework.core.annotation.AliasFor;

import java.lang.annotation.*;
import java.util.Date;

/**
 * @Author：zmc
 * @Date：2024/9/28 14:36
 *
 * 分布式锁注解：支持续期
 */

@Target({ElementType.METHOD, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public @interface PreventRepeatSubmit {

    /**
     * key(默认类目+方法名)
     * */
    String key() default "";

    /**
     * 按用户类别加锁
     * */
    boolean lockByPerson() default false;

    /**
     * 当开启spEL时，将通过spEL表达式解析key
     * */
    boolean openSpEL() default false;

    /**
     * 当开启按用户类别加索时，必须要指明请求来源
     * */
    RequestSourceEnum source() default RequestSourceEnum.MANAGE;

}
